package jmu.cultural_tourism.service.impl;

import jmu.cultural_tourism.entity.Route;
import jmu.cultural_tourism.dao.RouteDao;
import jmu.cultural_tourism.service.RouteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;

import java.util.List;

/**
 * 路径表(Route)表服务实现类
 *
 * @author makejava
 * @since 2025-07-20 20:46:23
 */
@Service("routeService")
public class RouteServiceImpl implements RouteService {
    @Autowired
    private RouteDao routeDao;

    /**
     * 通过ID查询单条数据
     *
     * @param routeId 主键
     * @return 实例对象
     */
    @Override
    public Route queryById(Integer routeId) {
        return this.routeDao.queryById(routeId);
    }

    /**
     * 分页查询
     *
     * @param route       筛选条件
     * @param pageRequest 分页对象
     * @return 查询结果
     */
    @Override
    public Page<Route> queryByPage(Route route, PageRequest pageRequest) {
        long total = this.routeDao.count(route);
        return new PageImpl<>(this.routeDao.queryAllByLimit(route, pageRequest), pageRequest, total);
    }

    /**
     * 获取所有路径信息
     *
     * @return 所有路径列表
     */
    @Override
    public List<Route> getAllRoutes() {
        return this.routeDao.queryAll();
    }

    /**
     * 新增数据
     *
     * @param route 实例对象
     * @return 实例对象
     */
    @Override
    public Route insert(Route route) {
        this.routeDao.insert(route);
        return route;
    }

    /**
     * 修改数据
     *
     * @param route 实例对象
     * @return 实例对象
     */
    @Override
    public Route update(Route route) {
        this.routeDao.update(route);
        return this.queryById(route.getRouteId());
    }

    /**
     * 通过主键删除数据
     *
     * @param routeId 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer routeId) {
        return this.routeDao.deleteById(routeId) > 0;
    }
}